/**
 * @file Definiciones.java
 * @brief Clase macro: declarada para agilizar y estandarizar nomenclaturas.
 *
 * Copyright (C)  - April [2011]
 *
 * @author Miguel Ángel Díaz López
 * @version 01.00
 *
 * @footnote e-mail:  admin    at etsiit.es
 */


package Definiciones;

/**
 * @class Definiciones
 * @brief Clase "estática" para estandarizar las nomenclaturas de la farmacia.
 */
public final class Definiciones {

    /**
      * @brief Estado del medicamento
      */
    public static enum Estado {
	DISPONIBLE, NO_DISPONIBLE, PENDIENTE, SUMINISTRADA, CANCELADA, NO_ENTREGADA,
        TERMINADO, DESECHADO
    }

    /**
      * @brief Categoría del medicamento + convertidores para la BD
      */
    public static enum ATC {
        A, B, C, D, G, H, J, L, M, N, P, R, S, V
    }
    public static Definiciones.ATC convertirATC(String cadena) {
        cadena = cadena.toUpperCase();
        if(cadena.equals("A")) return ATC.A;
        if(cadena.equals("B")) return ATC.B;
        if(cadena.equals("C")) return ATC.C;
        if(cadena.equals("D")) return ATC.D;
        if(cadena.equals("G")) return ATC.G;
        if(cadena.equals("H")) return ATC.H;
        if(cadena.equals("J")) return ATC.J;
        if(cadena.equals("L")) return ATC.L;
        if(cadena.equals("M")) return ATC.M;
        if(cadena.equals("N")) return ATC.N;
        if(cadena.equals("P")) return ATC.P;
        if(cadena.equals("R")) return ATC.R;
        if(cadena.equals("S")) return ATC.S;
        return ATC.V;
    }
    public static String convertirATC(Definiciones.ATC atc) {
        return atc.toString().toLowerCase();
    }

    /**
      * @brief Via de administración del medicamento + convertidores para la BD
      */
    public static enum ViaAdministracion {
        OFTALMICA, OPTICA, NASAL, ORAL, ORALAREOSOL, TOPICA, PARENTERAL,
        RECTAL, VAGINAL, OTRA
    }
    public static String convertirViaAdministracion(Definiciones.ViaAdministracion via) {
        String via_ = via.toString().toUpperCase();
        if(via_.equals("OFTALMICA")) return "a";
        if(via_.equals("OPTICA")) return "b";
        if(via_.equals("NASAL")) return "c";
        if(via_.equals("ORAL")) return "d";
        if(via_.equals("ORALAREOSOL")) return "e";
        if(via_.equals("TOPICA")) return "f";
        if(via_.equals("PARENTERAL")) return "g";
        if(via_.equals("RECTAL")) return "h";
        if(via_.equals("VAGINAL")) return "i";
        return "j";
    }
    public static Definiciones.ViaAdministracion convertirViaAdministracion(String via) {
        via = via.toLowerCase();
        if(via.equals("a")) return Definiciones.ViaAdministracion.OFTALMICA;
        if(via.equals("b")) return Definiciones.ViaAdministracion.OPTICA;
        if(via.equals("c")) return Definiciones.ViaAdministracion.NASAL;
        if(via.equals("d")) return Definiciones.ViaAdministracion.ORAL;
        if(via.equals("e")) return Definiciones.ViaAdministracion.ORALAREOSOL;
        if(via.equals("f")) return Definiciones.ViaAdministracion.TOPICA;
        if(via.equals("g")) return Definiciones.ViaAdministracion.PARENTERAL;
        if(via.equals("h")) return Definiciones.ViaAdministracion.RECTAL;
        if(via.equals("i")) return Definiciones.ViaAdministracion.VAGINAL;
        return Definiciones.ViaAdministracion.OTRA;
    }

    /**
     * @brief Unidad de tiempo para administrar las dosis de un medicamento
     * @author Francisco Manuel Herrero Pérez
     */
    public static enum UnidadTiempo {
        HORAS, DIAS
    }

   /**
     * @brief Convierte un entero al nombre del mes correspondiente
     * @author Miguel Ángel Díaz López
     */
    public static String convertirMes(Integer mes) {
        if(mes == 1) return "Enero";
        if(mes == 2) return "Febrero";
        if(mes == 3) return "Marzo";
        if(mes == 4) return "Abril";
        if(mes == 5) return "Mayo";
        if(mes == 6) return "Junio";
        if(mes == 7) return "Julio";
        if(mes == 8) return "Agosto";
        if(mes == 9) return "Septiembre";
        if(mes == 10) return "Octubre";
        if(mes == 11) return "Nomviembre";
        return "Diciembre";
    }

}
